home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / UTIL / FILEUTIL / HIERARCH / !Hierarchy / !Help < prev    next >
Text File  |  1995-01-23  |  17KB  |  363 lines

  1. -------------------------------------------------------------------------
  2.                               !Hierarchy
  3. -------------------------------------------------------------------------
  4.  
  5.                        Version: 1.39, (23.01.1995)
  6.                         RiscOS: mindestens V2.00
  7.                            RAM: mindestens 160 Kbytes
  8.                          Autor: Stefan Tomlik
  9.  
  10. !Hierarchy ist Public Domain und darf frei kopiert, verbreitet und benutzt
  11. werden. Es ist nicht erlaubt, außer zum Zweck der Aufwandsentschädigung oder
  12. der Begleichung von Versandkosten für !Hierarchy irgendeinen Geldbetrag zu
  13. berechnen.
  14.  
  15. Da ich nicht garantieren kann, daß dieses Programm fehlerfrei ist (wer kann
  16. das schon), übernehme ich keine Verantwortung für einen etwaigen Verlust von
  17. Daten, Zeit, Geduld oder Nerven, der durch die Benutzung von !Hierarchy
  18. entstanden ist.
  19.  
  20. Ich verlange für dieses Programm kein Geld, bitte aber um möglichst
  21. originelle Geschenke jeder Art!
  22.  
  23. Soviel dazu ...
  24.  
  25. Dieses Programm dient dazu, von Archimedes-typischen Dateisystemen (ADFS,
  26. SCSIFS, IDEFS, RAMFS, ArcFS) Übersichtsdateien zu erstellen.
  27. Übersichtsdateien ähneln vom Inhalt her der Ausgabe von 'Dir' und 'List' auf
  28. dem Commodore Amiga. Weitere Erklärungen kann ich mir eigentlich sparen. Ein
  29. kleines Beispiel:
  30.  
  31. Inhaltsverzeichnis von SCSI::Sys.$.Grafik.!FYEO
  32.  
  33. Datei wurde erstellt: 20:05:36 19-Nov-1994
  34.  
  35. !Boot (323 bytes)
  36. !Help (1237 bytes)
  37. !Run (927 bytes)
  38. !RunImage (48 Kbytes)
  39. !Sprites (2452 bytes)
  40. !Sprites22 (4 Kbytes)
  41. Docs________
  42.             Arm'sTech (990 bytes)
  43.             Credits (306 bytes)
  44.             Future (123 bytes)
  45.             History (798 bytes)
  46.             Perfs (1914 bytes)
  47.             ReadMe (1135 bytes)
  48.             = 5 Kbytes
  49. DTable (32 Kbytes)
  50. Sprites (3480 bytes)
  51. Templates (1729 bytes)
  52. = 99 Kbytes
  53.  
  54. Verzeichnisse: 2
  55. Dateien: 15
  56.  
  57. Das ist das Inhaltsverzeichnis des PD-Programms !FYEO (was ich übrigens nur
  58. empfehlen kann). An diesem kleinen Beispiel kann man eigentlich alles sehen,
  59. was zu erwähnen wäre, aber ich fasse nochmal zusammen:
  60.  
  61. - Alphabetische Auflistung aller Objekte in einem Verzeichnis
  62. - Angabe der Größe von Dateien (xxxx bytes/Kbytes/Mbytes)
  63. - Angabe der Größe eines Verzeichnisses (auch von Applikationen).
  64. - Strukturierte Ausgabe je nach Verzeichnisstruktur
  65. - Und ... Drag & Drop! Ich habe dieses Beispiel direkt aus !Hierarchy
  66.   importiert.
  67.  
  68. Der Anlaß für dieses Programm war das Bemühen, die Bestände an Public Domain
  69. auf einer sehr großen Festplatte im Auge behalten zu können. Das war auf die
  70. Dauer mit !FileTree (© John A.M. Tytgat) zu umständlich und unnötig komplex,
  71. obwohl das Programm sehr gut gelungen ist (wenn auch nicht fehlerfrei). Ein
  72. weites gutes Programm zu diesem Thema ist natürlich !DiscSpace von Martin
  73. Wuerthner.
  74.  
  75. Abgesehen davon wollte ich ausprobieren, wie weit ich mit dem verwendeten
  76. ISO-Pascal-Compiler gehen kann. Wie sich herausstellte, ist dieser für
  77. derartige Aufgaben nicht besonders gut geeignet, da man sich für einige
  78. Sachen fast schon einen Wolf tippt. Abgesehen davon, daß man sich z.B.
  79. Routinen für Strings erst noch selber schreiben muß.
  80.  
  81. -------------------------------------------------------------------------
  82.                                  Anwendung
  83. -------------------------------------------------------------------------
  84.  
  85. Starten Sie die Applikation per Doppelklick auf das Applikationsicon in
  86. einem Verzeichnisfenster. Es installiert sich rechts auf der Iconbar.
  87. Wenn Sie keinen Bock mehr haben, weiterzulesen, können Sie auch ganz
  88. einfach die !Help-Applikation verwenden, um sich mit dem Programm ver-
  89. traut zu machen.
  90.  
  91. Verfügbare Aktionen:
  92.  
  93. Iconbar:
  94. --------
  95.  
  96. - SELECT öffnet das Statusfenster, das den aktuellen Zustand von !Hierarchy
  97. anzeigt.
  98.  
  99. - MENU öffnet das Hauptmenü.
  100.  
  101. - ADJUST hält einen gerade aktiven Durchlaufprozeß vorübergehend an.
  102.   Nochmaliges Anwählen setzt diesen Prozeß fort. (siehe Hauptmenü, 'Pause')
  103.  
  104. Das Menü-System:
  105. ----------------
  106.  
  107. - Information zeigt das Infofenster für !Hierarchy.
  108.  
  109. - Sichern führt zu dem üblichen 'Sichern' - Dialog. Der Unterschied ist,
  110.   daß dieser Dialog weder auf 'Return' reagiert noch ein OK-Gadget hat.
  111.  
  112. - Status öffnet das oben bereits erwähnte Statusfenster.
  113.  
  114. - Pause hält einen gerade aktiven Durchlaufprozeß vorübergehend an.
  115.   Nochmaliges Anwählen setzt diesen Prozeß fort.
  116.  
  117. - Beenden ...  beendet die Applikation!
  118.  
  119. - Optionen . Mit Dateigröße.
  120.   Wenn angewählt, speichert !Hierarchy die Größe jeder Datei mit in
  121.   der Übersichtsdatei.
  122.  
  123. - Optionen . Verz. Summieren.
  124.   Wenn angewählt, speichert !Hierarchy die Größe aller Dateien eines
  125.   Verzeichnisses als Summe mit in der Übersichtsdatei.
  126.  
  127. - Optionen . App. durchsuchen.
  128.   Ist diese Option nicht angewählt, läßt !Hierarchy detaillierte
  129.   Informationen zu den Dateien in einem Applikationsverzeichnis
  130.   weg und speichert nur die Größe aller Dateien der Applikation in der
  131.   Übersichtsdatei. Ich habe diese Option implementiert, da es oft nicht
  132.   von Interesse ist, was sich in einer Applikation befindet. (!Run,
  133.   !Boot, !RunImage, !Sprites, usw.)
  134.  
  135. - Optionen . Multitasking.
  136.   Ist diese Option nicht angewählt, dann hält !Hierarchy andere Programme
  137.   während eines Durchlaufprozesses an (bildlich gesprochen) und beansprucht
  138.   die gesamte zur Verfügung stehende Prozessorzeit für sich alleine. Das
  139.   Programm arbeitet dadurch *geringfügig* schneller. Es gibt allerdings
  140.   andere wichtigere Gründe, diese Option auszuschalten. (siehe unten)
  141.  
  142. - Optionen . Endnamen benutzen.
  143.   Wenn angewählt, setzt !Hierarchy den Endnamen des zu durchlaufenden
  144.   Verzeichnisses als Endnamen der zu erzeugenden Übersichtsdatei ein.
  145.   In Fällen, wo dies nicht möglich ist, werden alle nicht erlaubten
  146.   Zeichen des Namens durch '-' ersetzt. Es ist z.B. nicht möglich,
  147.   einer Datei den Namen '$' zu geben.
  148.  
  149. - Optionen . Optionen sichern. Sichert die aktuellen Einstellungen im
  150.   Applikationsverzeichnis. Es wird auch festgehalten, ob das Statusfenster
  151.   offen ist oder nicht.
  152.  
  153. Statusfenster:
  154. --------------
  155.  
  156. - Aktion: Zeigt den aktuellen Zustand des Programms an. Derzeit entweder
  157.   'Waiting ...' oder 'Scanning directory tree of ...'.
  158.  
  159. - Start: Zeigt während des Durchlaufens einer Verzeichnishirarchie deren
  160.   oberstes Verzeichnis an, also den Pfadnamen des Startverzeichnisses.
  161.  
  162. - Aktuell: Zeigt während des Durchlaufens den Pfadnamen des Verzeichnisses
  163.   an, das zum aktuellen Zeitpunkt durchlaufen wird.
  164.  
  165. - Nach: Zeigt den vollen Pfadnamen der zu erstellenden Übersichtsdatei an.
  166.   Wird die Datei zu einer anderen Applikation übertragen, wird der Name
  167.   dieser Applikation angezeigt.
  168.  
  169. - Erfaßt: Zeigt während des Durchlaufens an, wieviele Verzeichnisse und
  170.   Dateien !Hierarchy schon untersucht hat.
  171.  
  172. MENU innerhalb des Fensters öffnet das bereits beschriebene Hauptmenü.
  173.  
  174. -------------------------------------------------------------------------
  175.                   Wie erstellt man eine Übersichtsdatei?
  176. -------------------------------------------------------------------------
  177.  
  178. - Öffnen Sie per MENU das Hauptmenü. Es ist sowohl über Iconbar als auch im
  179.   Statusfenster erreichbar.
  180.  
  181. - Gehen Sie mit der Maus in den 'Sichern' - Dialog.
  182.  
  183. - Geben Sie einen Namen für die Datei ein. Dieser Name darf keine Pfadangaben
  184.   enthalten. Sie können maximal 10 Zeichen eingeben.
  185.  
  186. - Ziehen Sie das Datei-Icon (Text) aus dem 'Sichern' - Dialog in ein
  187.   Verzeichnisfenster. Die Verzeichnisstruktur innerhalb dieses Verzeich-
  188.   nisses wird jetzt in der Datei gespeichert.
  189.  
  190. - Wollen Sie die Übersichtsdatei eines Verzeichnisses woanders als im
  191.   Verzeichnis selbst abspeichern, ziehen Sie ein Icon aus dem gewünschten
  192.   Verzeichnis auf das Iconbar-Icon oder das Statusfenster von !Hierarchy
  193.   und speichern Sie die Datei dann woanders. Alle Pfadangaben werden
  194.   entsprechend im Statusfenster angezeigt.
  195.  
  196. - Das Icon 'Löschen' (im Statusfenster rechts) dient dazu, vor dem
  197.   Abspeichern getroffene Entscheidungen rückgängig zu machen: es wird dann
  198.   wieder die Verzeichnisstruktur des Verzeichnisses durchlaufen, in dem die
  199.   Übersichtsdatei abgespeichert wird.
  200.  
  201. - Das Icon 'Abbruch' (unter 'Löschen') unterbricht einen gerade aktiven
  202.   Durchlaufprozeß. Die Datei wird trotzdem unvollständig gespeichert
  203.   oder in der gewünschten Applikation geladen.
  204.  
  205. - Das Hauptmenü schließt sich selbstständig.
  206.  
  207. -------------------------------------------------------------------------
  208.                           Mögliche Erweiterungen
  209. -------------------------------------------------------------------------
  210.  
  211. - Während eine Datei erstellt wird, ist 'Sichern' im Hauptmenü nicht
  212.   anwählbar.
  213.   (Ich habe WEDER BOCK NOCH ZEIT, für RiscOS einen Multithread-Aufsatz zu
  214.   entwickeln. Das überlasse ich Acorn oder anderen Programmierern. Eine
  215.   sinnvolle Möglichkeit wäre, die eigentliche Routine zum Erstellen der
  216.   Übersichtsdatei vom Hauptprogramm zu trennen, als eigenen Task laufen
  217.   zu lassen und über ein Messageprotokoll zu überwachen.) Es ist übrigens
  218.   auch nicht möglich, während der Erstellung einer Datei die Optionen oder
  219.   Pfadangaben (mittels 'Löschen') zu verändern, was auch nicht sinnvoll ist.
  220.  
  221. - Man könnte aus diesem Utility problemlos ein Backup-Programm machen.
  222.   Sollte ich irgendwann mal Zeit haben oder mich während des Studiums mit
  223.   dem Rucksackproblem beschäftigen, ist es soweit.
  224.  
  225. - RAM-Transfer von übersichtsdateien (z.B. nach !Edit) ist noch nicht
  226.   implementiert. Wäre aber denkbar.
  227.  
  228. - Dateinamen dürfen in dieser Version nicht länger als 10 Zeichen sein.
  229.  
  230. - Das nächste Update wird String-Routinen in Assembler enthalten. Die
  231.   altbekannte OS_GBPB 10 - Routine läßt sich auch noch verbessern, da
  232.   die aktuelle Version die Verzeichniseinträge einzeln durchsucht,
  233.   anstatt den Inhalt eines Verzeichnisses komplett abzufragen. Ich
  234.   muß mir aber noch etwas überlegen, wie ich Stack-Overflows abfange,
  235.   bevor ich die Routine ändere. Diese Version ist mir jedenfalls
  236.   eindeutig zu lahm, spätestens nachdem ich M. Wuerthner's !DiscSpace
  237.   gesehen habe. Immerhin kann man problemlos im Hintergrund arbeiten,
  238.   da *sehr* oft Wimp_Poll aufgerufen wird.
  239.  
  240. - Ich habe die Applikation soweit internationalisiert, wie es mein
  241.   Schulwissen zuläßt. Sollte jemand eine französische, griechische
  242.   oder mexikanische Variante hinzufügen wollen ... bitte sehr!
  243.   
  244. -------------------------------------------------------------------------
  245.                            Bekannte Probleme
  246. -------------------------------------------------------------------------
  247.  
  248. - !Hierarchy benutzt das standardisierte Data-Transfer-Protokoll wie im
  249.   Programmer's Reference Manual beschrieben. Es kann deshalb zu Fehlern mit
  250.   Programmen kommen, die sich nicht an die Vorgaben halten, z.B. !PCompile,
  251.   !Zap, !Impression ... Die Dateien im Verzeichnis 'doc' enthalten weitere
  252.   Informationen zu diesem Thema. !Impression ist z.B. schon zufrieden,
  253.   wenn man die Multitasking-Option von !Hierarchy ausschaltet. Vielleicht
  254.   sollte man diesem Programm beim nächsten Update noch beibringen, auf
  255.   gewisse Sachen wie z.B. Message_DataLoad zu warten.
  256.  
  257. - Nachtrag: die Probleme mit !Zap sind beseitigt. Ich bitte höflichst und
  258.   untertänigst um Entschuldigung ... ich habe die Dateien in 'doc' noch
  259.   etwas erweitert: 'was man nie vergessen sollte'. !Impression 2.19
  260.   schmiert immer noch gnadenlos ab, wenn es nach Msg_DataSave keine
  261.   weiteren Aufforderungen mehr erhält.
  262.  
  263. - Größengaben zu offenen Dateien sind inkorrekt. Ich habe bisher auch keine
  264.   Idee, wie ich dieses Problem umgehen soll. Die einzige Möglichkeit, die mir
  265.   spontan eingefallen ist, die ich aber nicht programmiert habe, ist *CLOSE
  266.   vor Aufruf der eigentlichen Routine.
  267.  
  268. - OS_GBPB steigt manchmal mit der Fehlermeldung aus 'xxx is a file.'
  269.   Das kann nur passieren, wenn die Scan-Routine in !Hierarchy versucht,
  270.   'xxx' als als Verzeichnis zu untersuchen. Sollte mir das jemand erklären
  271.   können oder ein reproduzierbares Beispiel liefern können, bitte melden!
  272.  
  273. - !Hierarchy ignoriert Directory-Links, die mit !LinkFS oder vom Arbeits-
  274.   prinzip her ähnlichen Programmen erzeugt worden sind. Das bleibt auch so,
  275.   um zu verhindern, daß irgendwelche Pappnasen sich bei mir über endlose
  276.   Rekursionen in ein und demselbem Verzeichnis beschweren.
  277.  
  278. - Die Implementierung der Solid-Drag-Option von RiscOs 3.xx hat mich eine
  279.   Weile aufgehalten und scheint auch noch nicht ganz sauber zu sein. Um
  280.   genau zu sein, ist es mir bisher nicht gelungen, DragASprite_Start auf
  281.   ein Icon anzuwenden, das das 'indirected'- Flag (bit 8) gesetzt hat. Das
  282.   Problem ist mir inzwischen bekannt, aber ich habe noch keine Lösung.
  283.  
  284. - Die Zähler für die Anzahl von erfaßten Verzeichnissen und Dateien im
  285.   Statusfenster werden nicht korrekt angezeigt, wenn die Multitasking-
  286.   Option aus ist.
  287.   Ich habe schlicht und einfach keine Ahnung, warum das so ist, denn der
  288.   aktuelle Pfad WIRD während des Durchlaufens richtig angezeigt.
  289.  
  290. - Outline-Fonts werden auch in dieser Version nicht richtig gehandhabt. Ich
  291.   wäre sehr dankbar, wenn mir jemand Informationen darüber zukommen lassen
  292.   würde, wie man auf einfache Art und Weise mit einem 'font reference
  293.   count array' umgeht.
  294.   Ich bin über jede Hilfe, die ich bekommen kann, dankbar! (Adresse siehe
  295.   unten)
  296.  
  297. - Wie schon beschrieben sind Größenabgaben zu offenen Dateien nicht korrekt.
  298.   Um dieses Problem zu umgehen, sollte man Übersichtsdateien nicht in
  299.   Verzeichnissen erzeugen, die von !Hierarchy gerade dann durchlaufen
  300.   werden. Die Größe (der 'Extent') einer offenen Datei hängt übrigens auch
  301.   von der Filecore-Struktur des verwendeten Datenträgers ab.
  302.  
  303. - Vermeiden Sie es, Archive abzumelden ('Close Arc'), wenn !Hierarchy gerade
  304.   einen Pfad innerhalb eines Verzeichnisses von ArcFS durchläuft.
  305.  
  306. - Es ist natürlich möglich, eine Übersichtsdatei via !Spark in ein Archiv zu
  307.   schreiben. Vergessen Sie aber bitte nicht den Unterschied zwischen
  308.   Verzeichnisfenster und einem Fenster, das von Spark geöffnet wurde.
  309.  
  310. - Die Gesamtlänge eines Pfadnamens darf 255 Zeichen nicht überschreiten. Das
  311.   dürfte allerdings nur für diejenigen interessant sein, die von der
  312.   Festplatten-Krankheit befallen sind und für jedes Unterscheidungsmerkmal
  313.   ansonsten ähnlicher Dateien NOCH EIN Unterverzeichnis anfertigen.
  314.   Die Verzeichnisse werden rekursiv durchlaufen. Stacküberläufe werden dank
  315.   Acorn's ISO-Pascal-Compiler nicht abgefangen.
  316.  
  317. - Bitte ändern Sie nicht die !Run-Datei im Applikationsverzeichnis. Falls
  318.   Sie es doch tun, denken Sie bitte daran, daß die Applikation mindestens
  319.   160k braucht. Die !RunImage-Datei ist gesqueezt.
  320.  
  321. - Da DOSFS (RiscOS 3.10) und einige :-) Image-Filesysteme es wohl nicht
  322.   schaffen, den Dateityp einer offenen Datei zu setzen, wird einer neu
  323.   erzeugten Übersichtsdatei erst dann der Typ 'Text' (fff) gegeben,
  324.   nachdem sie geschlossen wurde.
  325.  
  326. - Noch etwas zu 'DragASprite'. Was ich erst für einen absolut hirnver-
  327.   drehenden und wahrscheinlich unauffindbaren Bug von !Hierarchy gehalten
  328.   habe, stellte sich nach einigen Versuchen als Schwäche des DragASprite-
  329.   Moduls heraus: zieht man ein Icon aus einem beliebigen 'Save as'-Fenster
  330.   in die linke oder rechte untere Ecke des Bildschirms, fängt das Icon an
  331.   zu flackern. Das passiert allerdings nur, wenn der Mauszeiger über dem
  332.   IconBar-Fenster ist. Ich nehme mal ganz vorwitzig an, daß der scroll_x-
  333.   offset der Iconbar auch dann geändert wird, wenn alle Icons in diesem
  334.   Fenster noch sichtbar sind (visible_area_x_max = work_area_x_max).
  335.  
  336. - Version 1.38 benutzt ein neues Menu-Interface. Der Text in Menüs darf
  337.   hiermit jetzt länger als 12 Zeichen sein. Richtig. Indirected. Für die
  338.   Menü-Einträge wird jetzt OS_Heap benutzt, was allerdings immer noch
  339.   nicht zufriedenstellend ist. Ich habe für die Menüs 8 kb im Programm
  340.   reserviert. Sollte der Speicherplatz nicht ausreichen, sollte sich
  341.   OS_Heap korrekt beschweren und das Programm sich korrekt beenden, was
  342.   ich aber noch nicht ausprobiert habe. Was weiterhin zu beachten ist:
  343.   Menü-Titel KÖNNEN nicht länger als 12 Zeichen sein. 
  344.  
  345. - Ich habe in Version 1.38 in einem Anfall von Wahnsinn meinen geliebten
  346.   Spaghetti-Code aus ein paar Routinen entfernt. Das Programm sollte
  347.   jetzt ein wenig schneller laufen.
  348.  
  349. - Version 1.39 benutzt nicht mehr eigene Message-File-Routinen, sondern
  350.   das übliche MsgTrans-Modell. Mir fällt leider nicht mehr viel ein,
  351.   wie ich die Größe der !RunImage-Datei drücken kann.
  352.  
  353. - Sollte jemandem irgendeine hochwichtige Option einfallen, die noch nicht
  354.   implementiert ist, einen Fehler gefunden haben, den ich noch nicht kenne
  355.   oder andere Anregungen haben, hier meine Adresse:
  356.  
  357.   Stefan Tomlik
  358.   Im Dachsbau 11
  359.   D-59199 Bönen (Germany)
  360.   Tel.: 02383 / 5482 (ab 19 Uhr)
  361.  
  362.   internet eMail: tomlik00@marvin.informatik.uni-dortmund.de
  363.